/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package interfaz1;

//import Validar;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import java.lang.Float;


/**
 *
 * @author CLIENTE
 */
public class Main {

   /* Seccion miseccion = new Seccion();
    Profesor miprofesor;
    Estudiante miestudiante;
    Validar val;
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws IOException {
        
    FrmPrincipal frmprinc = new FrmPrincipal();
    frmprinc.show();
        /*// TODO code apublic static void main( String args[]) throws IOException {

		Seccion miseccion = new Seccion();
		BufferedReader lector = new BufferedReader(new InputStreamReader(System.in));

		Validar val = new Validar();
		int opcion;

		do {

			// Mensajes mostrados por la consola
			System.out.println("\t************************");
			System.out.println("\t    MENU PRINCIPAL      ");
			System.out.println("\t************************");
			System.out.println("\t(1) Seccion ");
			System.out.println("\t(0) Salir ");

                        System.out.print("\tEscoja una opcion: ");
			// Lectura de dato de entrada
			//int tipo = lector.readLine();
			opcion = Validar.datoInt();//Integer.parseInt(lector.readLine());

			switch(opcion)
			{
			case 1: menuseccion(miseccion);
			break;
			default: System.out.println("\t Opcion Invalida.");
			}
			}while(opcion!=0);
	}		//FIN DEL MAIN



public static void menuseccion(Seccion miseccion) throws IOException
{
	BufferedReader lector = new BufferedReader(new InputStreamReader(System.in));
	int opcionseccion;
	System.out.println("\t*********Operaciones de la Seccion*********");
	System.out.print("\tIntroduzca el Numero de la Seccion: ");
	String N_seccion = lector.readLine();
	boolean encon= false;  //registrar profsor
	boolean encon1 = false;  //registrar studiante
	boolean encon2 = false;  // aplicar evaluaciones con listados
	boolean encon3 = true;


	do {
		// Mensajes mostrados por la consola
		System.out.println("\t*************************************");
		System.out.println("\t Seccion: "+ N_seccion );
		System.out.println("\t Numero de Alumnos Escritos en la Seccion: " + miseccion.num_alumnos());
		System.out.println("\t*************************************\n");
		System.out.println("\t(1) Asignar Profesor ");
		System.out.println("\t(2) Consultar Profesor ");
		System.out.println("\t(3) Eliminar Profesor ");
		System.out.println("\t(4) Registrar Estudiante ");
		System.out.println("\t(5) Eliminar Estudiante ");
		System.out.println("\t(6) Buscar un Estudiante por Cedula ");
		System.out.println("\t(7) Aplicar Evaluaciones ");
		System.out.println("\t(8) Lista Estudiantes Ordenados por Cedula ");
		System.out.println("\t(9) Lista Estudiantes Ordenados por nota final ");
		System.out.println("\t(10)Lista Estudiantes aprobados ");
		System.out.println("\t(11)Listar Estudiantes Aplazados ");
		System.out.println("\t(12)Mostrar promedio de notas ");
		System.out.println("\t(0) Salir  ");
		System.out.print("\tEscoja una de las siguientes Opciones: ");

		opcionseccion = Validar.datoInt(); //Integer.parseInt(lector.readLine());
		Estudiante miestudiante = new Estudiante();
		Profesor miprofesor = new Profesor();

		switch(opcionseccion)
		{
		case 1:
		{
			if(encon2 == true)
			{
				System.out.println("\tYa la evaluacion ha sido aplicada. No puede cambiar el profesor");
			}
			else
			{
			System.out.println("\t*************************************");
			System.out.println("\t Seccion: "+ N_seccion );
			System.out.println("\t Numero de Alumnos Escritos en la Seccion: " + miseccion.num_alumnos());
			if(miseccion.num_profesor() == 0)
			{
			System.out.println("\t*************************************");
			System.out.println("\t Introduzca Datos del Profesor");
			System.out.print("\t Introduzca la Cedula:");
			String cedula = lector.readLine();
			System.out.print("\t Introduzca el nombre:");
			String nombre = lector.readLine();
			System.out.print("\t Introduzca el Apellido:");
			String apellido = lector.readLine();
			System.out.print("\t Introduzca el Titulo Obtenido:");
			String titulo = lector.readLine();
			miseccion.InscribirProfesor(new Profesor(cedula,nombre, apellido,  titulo));
			encon = true;
			}
			else
			{
			System.out.println("\tYa Existe un Profesor Asignado.");
			System.out.println("\tSi desea Asignar otro, debe Eliminar el Existente");
			}
			}
			System.out.println();
			break;
		}//case 1

		case 2:
		{
			System.out.println("\t*************************************");
			System.out.println("\t Seccion: "+ N_seccion );
			System.out.println("\t*************************************");
			miseccion.imprimirProfesor();
			System.out.print("\t Numero de Alumnos Escritos en la Seccion: " + miseccion.num_alumnos());
			System.out.println();
			System.out.print("\t Introduzca la Cedula:");
			String cedula = lector.readLine();
			miprofesor = miseccion.BuscarProfesor(cedula);
			if(miprofesor!=null)
			{
			System.out.println(miprofesor.getNombre());
			System.out.println(miprofesor.getApellido());
			System.out.println(miprofesor.getCedula());
			System.out.println(miprofesor.getTituloA());
			}
			else
			{
			 System.out.print("\t El Profesor no esta Registrado \n");
			}
				System.out.println();
				break;
		}
		case 3:
		{
			char resp1= 'N';
			if(encon2 == true)
			{
				System.out.println("\tYa la evaluacion ha sido aplicada. No puede eliminar el profesor");
			}
			else
			{
			//while((resp =='S') || (resp=='s'))
			System.out.println("\t*************************************");
			System.out.println("\t Seccion: "+ N_seccion );
			System.out.println("\t*************************************");
			System.out.println("\t Numero de Alumnos Inscritos en la Seccion: " + miseccion.num_alumnos());
			miseccion.imprimirProfesor();
			System.out.println("\t*************************************");
			System.out.print("\t Introduzca la Cedula:");
			String cedula = lector.readLine();
			miprofesor = miseccion.BuscarProfesor(cedula);
			if(miprofesor!=null)
			{
			System.out.println(miprofesor.getNombre());
			System.out.println(miprofesor.getApellido());
			System.out.println(miprofesor.getCedula());
			System.out.println(miprofesor.getTituloA());
			System.out.print("Desea Eliminar  Profesor s/n?");
			System.out.flush();
			resp1= (char)System.in.read();
			System.in.skip(1);
			while((resp1 =='S') || (resp1=='s'))
			{
			miseccion.EliminarProfesor(cedula);
			System.out.println("\t Profesor Eliminado\n");
			encon = false;
			break;
			}
			}
			else
			{
				System.out.println("\t El Profesor no Existe\n");
		    }
			}
			System.out.println();
			break;
		}

		case 4:
		{

			char resp = 'S';
			if(encon2 == true)
			{
				System.out.println("\tYa la evaluacion ha sido aplicada. No puede registrar mas alumnos");
			}
			else
			{
			System.out.println("\t*************************************");
			System.out.println("\t Seccion: "+ N_seccion );
			System.out.println("\t Numero de Alumnos Escritos en la Seccion: " + miseccion.num_alumnos());
			miseccion.imprimirProfesor();
			System.out.println("\t*************************************");
			while((resp =='S') || (resp=='s'))
			{
				System.out.println("Introduzca los Datos del Estudiante:");
				System.out.print("\t Introduzca la Cedula:");
				String cedula = lector.readLine();
				miestudiante = miseccion.BuscarEstudiante(cedula);


				if(miestudiante!=null)
				{
				System.out.println("\tEl Estudiante ya esta registrado");
				}
				else
				{
				System.out.print("\t Introduzca el nombre: ");
				String nombre = lector.readLine();
				System.out.print("\t Introduzca el Apellido: ");
				String apellido = lector.readLine();
				miseccion.InscribirEstudiante(new Estudiante(cedula, nombre, apellido, 0, 0, 0, 0, ""));
				encon1 = true;
				}
				System.out.print("\tDesea Registrar otro Estudiante s/n?");
				System.out.flush();
				resp= (char)System.in.read();
				System.in.skip(1);
			}
		}
				System.out.println();
				break;
		} //case 4

		case 5:
		{
			if(encon2 == true)
			{
				System.out.println("\tYa la evaluacion ha sido aplicada. No puede retirar alumnos");
			}
			else
			{
			System.out.println("\t*************************************");
			System.out.println("\t Seccion: "+ N_seccion );
			System.out.println("\t Numero de Alumnos Escritos en la Seccion: " + miseccion.num_alumnos());
			miseccion.imprimirProfesor();
			System.out.println("\t*************************************");
			char resp1= 'N';
			char resp = 'S';
			while((resp =='S') || (resp=='s'))
			{
			System.out.print("\t Introduzca la Cedula:\n");
			String cedula = lector.readLine();
			miestudiante = miseccion.BuscarEstudiante(cedula);
			if(miestudiante!=null)
			{
			System.out.println(miestudiante.getNombre());
			System.out.println(miestudiante.getApellido());
			System.out.println(miestudiante.getCedula());
			System.out.print("Desea Eliminar  Estudiante s/n?");
			System.out.flush();
			resp1= (char)System.in.read();
			System.in.skip(1);
			while((resp1 =='S') || (resp1=='s'))
			{
			miseccion.RetirarEstudiante(cedula);
			System.out.println("\t Estudiante Eliminado\n");
			break;
			}
			}
			else
			{
				System.out.println("\t El Estudiante no Exite\n");
			}
			System.out.print("Desea Eliminar otro Estudiante s/n?");
			System.out.flush();
			resp= (char)System.in.read();
			System.in.skip(1);
		}
			}
			System.out.println();
				break;
		}//case 5

		case 6:
		{
			System.out.println("\t*************************************");
			System.out.println("\t Seccion: "+ N_seccion );
			System.out.println("\t Numero de Alumnos Escritos en la Seccion: " + miseccion.num_alumnos());
			miseccion.imprimirProfesor();
			System.out.println("\t*************************************");
			char resp = 'S';
			while((resp =='S') || (resp=='s'))
			{
				System.out.print("\t Introduzca la Cedula:");
				String cedula = lector.readLine();
				miestudiante = miseccion.BuscarEstudiante(cedula);
				if(miestudiante!=null)
				{
				System.out.println(miestudiante.getNombre());
				System.out.println(miestudiante.getApellido());
				System.out.println(miestudiante.getCedula());
				System.out.println(miestudiante.getNotaf());
				if(miseccion.isPresentado()==true)
				{
				System.out.println(((Estudiante) miestudiante).getNotaf());
				}
				}
				else
				{
				System.out.println("\tEl Estudiante no Existe");
				}
				System.out.print("Desea Buscar otro Estudiante s/n?");
				System.out.flush();
				resp= (char)System.in.read();
				System.in.skip(1);
			}
			System.out.println();
			break;
		}//case 6

		case 7:
		{
			if(encon3 == true)
			{
			if(encon == true && encon1 == true)
			{
			System.out.println("\t*************************************");
			System.out.println("\t Seccion: "+ N_seccion );
			System.out.println("\t Numero de Alumnos Escritos en la Seccion: " + miseccion.num_alumnos());
			miseccion.imprimirProfesor();
			System.out.println("\t*************************************");
		    miseccion.AplicarEvaluacion(miprofesor);
		    encon2 = true;
		    encon3 = false;
			}
			else
			{
				System.out.println("\tNo se pueden aplicar evaluaciones");
			}
			}
			else
			{
				System.out.println("\tYa estan aplicadas las evaluaciones");
			}
			System.out.println();
			break;
		}//case 7

		case 8:
		{
			if(encon2 == true)
			{
			System.out.println("\t*************************************");
			System.out.println("\t Seccion: "+ N_seccion );
			System.out.println("\t Numero de Alumnos Escritos en la Seccion: " + miseccion.num_alumnos());
			miseccion.imprimirProfesor();
			System.out.println("\t*************************************");
//			Collections.sort(miseccion.lis_est, new ComparadorCedula());
			miseccion.imprimirEstudiantes();
//			PrintStream ps = new PrintStream(new FileOutputStream("ListadoOrdenadoporCI.txt"));

			LinkedList<Estudiante> lis = miseccion.getlis_est();
			ListIterator<Estudiante> it = lis.listIterator();
//			ps.println("*************************************");
//			ps.println("\t Seccion: "+ N_seccion );
//			ps.println("*************************************");
//			ps.println("Listado de Alumnos Ordenados por Cedula");
			while (it.hasNext())
			{
				Estudiante e = it.next();
				//ps.println(e.getCedula()+ " " + e.getNombre()+ " " + e.getApellido()+ " " + e.getNotaf() );
			}
//			ps.close();

			}
			else
				{
					System.out.println("\tNo se han aplicado evaluaciones");
				}
			System.out.println();
			break;
		}// case 8

		case 9:
		{
			if(encon2 == true)
			{
			System.out.println("\t*************************************");
			System.out.println("\t Seccion: "+ N_seccion );
			System.out.println("\t Numero de Alumnos Escritos en la Seccion: " + miseccion.num_alumnos());
			miseccion.imprimirProfesor();
			System.out.println("\t*************************************");
//			Collections.sort(miseccion.lis_est,new ComparadorNotaF());
			miseccion.imprimirEstudiantes();
//			PrintStream ps = new PrintStream(new FileOutputStream("ListadoOrdenadoporNotaF.txt"));

			LinkedList<Estudiante> lis = miseccion.getlis_est();
			ListIterator<Estudiante> it = lis.listIterator();
//			ps.println("*************************************");
//			ps.println("\t Seccion: "+ N_seccion );
//			ps.println("*************************************");
//			ps.println("Listado de Alumnos Ordenados por Nota Final");
			while (it.hasNext())
			{
				Estudiante e = it.next();
//				ps.println(e.getCedula()+ " " + e.getNombre()+ " " + e.getApellido()+ " " + e.getNotaf() );
			}
//			ps.close();
			}
			else
			{
				System.out.println("\tNo se han aplicado evaluaciones");
			}

			System.out.println();
			break;
		}// case 9

		case 10:
		{
			if(encon2 == true)
			{
			System.out.println("\t*************************************");
			System.out.println("\t Seccion: "+ N_seccion );
			System.out.println("\t Numero de Alumnos Escritos en la Seccion: " + miseccion.num_alumnos());
			miseccion.imprimirProfesor();
			System.out.println("\t************************");
			System.out.println("\tListado de Aprobados\n");
			System.out.println("\t************************");
			miseccion.ListadoAprobados(miestudiante, miprofesor);
//		    PrintStream ps = new PrintStream(new FileOutputStream("LisAprobados.txt"));
		    ListIterator<Estudiante> it = miseccion.list_aux.listIterator();
//		    ps.println("*************************************");
//			ps.println("\t Seccion: "+ N_seccion );
//			ps.println("*************************************");
//		    ps.println("Listado de Alumnos Aprobados de la Seccion");
		    while (it.hasNext())
			{
			Estudiante e = it.next();

//			ps.println(e.getCedula()+ " " + e.getNombre()+ " " + e.getApellido()+ " " + e.getNotaf() );

			}
//			ps.close();
			}
			else
			{
				System.out.println("\tNo se han aplicado evaluaciones");
			}
			System.out.println();
			break;
		}// case 10

		case 11:
		{
			if(encon2 == true)
			{
			System.out.println("\t*************************************");
			System.out.println("\t Seccion: "+ N_seccion );
			System.out.println("\t Numero de Alumnos Escritos en la Seccion: " + miseccion.num_alumnos());
			miseccion.imprimirProfesor();
			System.out.println("\t************************");
			System.out.println("\tListado de Reprobados\n");
			System.out.println("\t************************");
		    miseccion.ListadoReprobados(miestudiante, miprofesor);
		  //  PrintStream ps = new PrintStream(new FileOutputStream("LisAplazados.txt"));
		    ListIterator<Estudiante> it = miseccion.list_aux.listIterator();
		  //  ps.println("*************************************");
		//	ps.println("\t Seccion: "+ N_seccion );
		//	ps.println("*************************************");
		  //  ps.println("Listado de Alumnos Aplazados de la Seccion");
		    while (it.hasNext())
			{
			Estudiante e = it.next();

			//ps.println(e.getCedula()+ " " + e.getNombre()+ " " + e.getApellido()+ " " + e.getNotaf() );
			}
			//ps.close();
			}
			else
				{
					System.out.println("\tNo se han aplicado evaluaciones");
				}
			System.out.println();
			break;
		}// case 11

		case 12:
		{
			if(encon2 == true)
			{
			System.out.println("\t*************************************");
			System.out.println("\t Seccion: "+ N_seccion );
			System.out.println("\t Numero de Alumnos Escritos en la Seccion: " + miseccion.num_alumnos());
			miseccion.imprimirProfesor();
			System.out.println("\t************************");
			System.out.println("\t Promedio de Notas de la Seccion: " + miseccion.MostrarPromedio());
			//PrintStream ps = new PrintStream(new FileOutputStream("PromedioSeccion.txt"));
			//ps.println("\t Promedio de Notas de la Seccion" + " " + miseccion.MostrarPromedio());
			//ps.close();
			}
			else
			{
				System.out.println("\tNo se han aplicado evaluaciones");
			}
			System.out.println();
			break;
		}// case 12
		default: System.out.println("\t Opcion Invalida.");
	}//sw
}while(opcionseccion!=0);
}//menu secc*/

}
}
//Application logic here
//    }

//}
